﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLGPS;
using Utilities.UI;

public partial class Intranet_ABMDispositivo : BasePage
{
    public override Perfil Perfil { get { return Perfil.Intranet ; } }

    protected override BLGPS.Permiso Permiso { get { return BLGPS.Permiso.ABMDispositivo; } }

    public ColeccionDispositivo Dispositivos    {
        get { return (ColeccionDispositivo)Session["Dispositivos"]; }
        set { Session["Dispositivos"] = value; }
    }

    public Dispositivo DispositivoSeleccionado
    {
        get { return (Dispositivo)Session["DispositivoSeleccionado"]; }
        set { Session["DispositivoSeleccionado"] = value; }
    }

    public ColeccionTipoDispositivo TiposDispositivos
    {
        get { return (ColeccionTipoDispositivo)Session["TiposDispositivos"]; }
        set { Session["TiposDispositivos"] = value; }
    }
    public ColeccionVehiculo  VehiculosSinAsignar
    {
        get { return (ColeccionVehiculo )Session["VehiculosSinAsignar"]; }
        set { Session["VehiculosSinAsignar"] = value; }
    }
               

    protected void Page_Load(object sender, EventArgs e)
    {
        Titulo = "Dispositivos";

        if (!IsPostBack)
        {
            TiposDispositivos = ColeccionTipoDispositivo.Tipos;
           
            cmbTipo.Fill(TiposDispositivos, "Descripcion");
            LlenarGrilla();
        }
    }

    private void LlenarGrilla()
    {
        Dispositivos = ColeccionDispositivo.CargarPorEmpresa(Empresa);
        grd.DataSource = Dispositivos;
        grd.DataKeyNames = new string[] { "Id" };
        grd.DataBind();
    }

    protected void cmdNuevo_Click(object sender, EventArgs e)
    {
        Limpiar();
    }

    private void Limpiar()
    {
        hidTitle.Value = "Nuevo dispositivo";
        DispositivoSeleccionado = null;
        txtDescripcion.Text = "";
        txtIMEI.Text = "";
        txtNroCelular.Text = "";
        txtNroSerie.Text = "";
        chkActivo.Checked = true;
        cmbTipo.SelectedIndex = 1;
    }

    protected void grd_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        switch (e.CommandName)
        {
            case "modificar":
                DispositivoSeleccionado = (Dispositivo)grd.GetItem(Dispositivos, e);
                MostrarDatos();
                break;
            default:
                break;
        }
    }

    private void MostrarDatos()
    {
        //cada vez que selecciono un vehiculo tengo q volver a llenar la lista
        cmbVehiculo.Items.Clear();
        VehiculosSinAsignar = Empresa.Vehiculos.ObtenerSinDispositivo(Empresa);
        foreach (var item in VehiculosSinAsignar)
        {
            cmbVehiculo.Items.Add(new ListItem(item.Descripcion + ", " + item.Patente, item.Id.ToString()));
        }

        cmbVehiculo.Items.Insert(0, new ListItem("-Sin Asignar-", "0"));

        //agrego el vehiculo del dispositivo actual, porq no esta en la lista
        if (DispositivoSeleccionado.Vehiculo != null)
        {
            cmbVehiculo.Items.Add(new ListItem(DispositivoSeleccionado.Vehiculo.Descripcion + ", " + DispositivoSeleccionado.Vehiculo.Patente, DispositivoSeleccionado.Vehiculo.Id.ToString()));
        }

        hidTitle.Value = "Modificando datos del dispositivo";
        txtDescripcion.Text = DispositivoSeleccionado.Descripcion;
        txtIMEI.Text = DispositivoSeleccionado.IMEI;
        txtNroCelular.Text = DispositivoSeleccionado.NroCelular;
        txtNroSerie.Text = DispositivoSeleccionado.NroSerie;
        cmbTipo.SelectedValue = DispositivoSeleccionado.TipoDispositivo.Id.ToString();
        chkActivo.Checked = DispositivoSeleccionado.Activo == "S" ? true : false;
        cmbVehiculo.SelectedValue = DispositivoSeleccionado.Vehiculo == null ? "0" : DispositivoSeleccionado.Vehiculo.Id.ToString(); 
    }
    protected void cmdAceptar_Click(object sender, EventArgs e)
    {
        Vehiculo vehiculo = null;
        if (cmbVehiculo.SelectedValue != "0")
        {
            vehiculo = VehiculosSinAsignar.ObtenerPorId(long.Parse(cmbVehiculo.SelectedValue));
        }

        if (DispositivoSeleccionado == null)//es porq es nuevo
        {
            DispositivoSeleccionado = new Dispositivo();       
        }

        DispositivoSeleccionado.Activo = chkActivo.Checked ? "S" : "N";
        DispositivoSeleccionado.Descripcion = txtDescripcion.Text.Trim();
        DispositivoSeleccionado.IMEI = txtIMEI.Text.Trim();
        DispositivoSeleccionado.NroCelular = txtNroCelular.Text.Trim();
        DispositivoSeleccionado.NroSerie = txtNroSerie.Text.Trim();
        DispositivoSeleccionado.TipoDispositivo = TiposDispositivos.ObtenerPorId(long.Parse(cmbTipo.SelectedValue));
                   
#warning habilitar        DispositivoSeleccionado.Guardar(Empresa);

        DispositivoSeleccionado.AsignarVehiculo(vehiculo);
       
        Dispositivos = null;
        DispositivoSeleccionado = null;
        LlenarGrilla();
    }

    protected string obtenerEstado(object value)
    {
        return value.ToString().ToUpper() == "S" ? "Si" : "No";
    }
}